[C] Decompositor de números em fatores primos
Publicado por Enzo de Brito Ferber 27/06/2007
[ Hits: 10.472 ]
Homepage: http://www.maximasonorizacao.com.br
Como o nome já diz, um programa escrito em C, que decompõe um número qualquer em fatores primos e exibe estes números para o usuário.
/*
* Programa: Decompositor de numeros
* Arquivo : decom_primes.c
* Autor : Enzo Ferber 'Slackware_10'
*/
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
int *lista_primos(int size){
int prime, i=0, a, b;
int *list = (int*)malloc(size*sizeof(int));
if(!list){
printf("[-] Erro ao alocar memoria.\n");
printf("[-] Abortando...\n");
exit(0);
}
for(a=2;a<size;a++){
prime = FALSE;
for(b=1;b<=a;b++){
if(b == a) prime = TRUE;
if(((a%b)==0) && (b != 1)) break;
}
if(prime) list[i] = a;
if(prime) i += 1;
}
list[i] = 0x0;
return list;
}
int *fatores_primos(int num){
int *lista = lista_primos(num+1);
int *fatores = (int*)malloc(num*sizeof(int));
register int i;
int div_atual, fat_atual, list_ref, ref;
ref = num;
fat_atual = 0;
list_ref = 0;
div_atual = lista[list_ref];
for(i=0; i<num; i++){
if(ref == 1){
fatores[fat_atual] = 1;
break;
}
if((ref % div_atual) == 0){
ref = ref / div_atual;
fatores[fat_atual] = div_atual;
fat_atual++;
}
if((ref % div_atual) != 0) div_atual = lista[++list_ref];
}
free(lista);
fatores[fat_atual+1] = 0x0;
return fatores;
}
int main(int argc, char *argv[]){
int *list;
if(argc != 2){
printf("[-] Uso: %s <numero_a_fatorar>\n", argv[0]);
printf("[-] Abortando...\n");
exit(0);
}
list = fatores_primos(atoi(argv[1]));
while(*list) printf("%d\n", *list++);
return 0;
}
Manipulando argumentos com getopt_long
Validar CPF em C++ (esse funciona)
CalDOS - 60 funções em uma calculadora
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
O programa assinador digital (5)
Assinador JNLP do Site Portal da Nota Fiscal Eletrônica (5)









